Skip to content

docs: plan from-scratch SIP stack - #40

Closed
wavekat-eason wants to merge 1 commit into
mainfrom
docs/own-sip-stack-plan
Closed

docs: plan from-scratch SIP stack#40
wavekat-eason wants to merge 1 commit into
mainfrom
docs/own-sip-stack-plan

Conversation

@wavekat-eason

Copy link
Copy Markdown
Contributor

What

Adds plan doc 08 for a clean-room SIP transaction/dialog/transport engine that replaces the external SIP stack dependency over time.

Key decisions captured:

  • One crate, not two. The engine lives as an internal pub(crate) stack module inside wavekat-sip — consumers still cargo add wavekat-sip and nothing else. De-leaking the engine from the public API is a pub concern, not a crate-boundary concern.
  • Keep rsip for messages. Only the stateful layer (transactions, dialogs, transport, digest orchestration) is written from scratch — no reimplementing a SIP parser.
  • Scoped to our UA flows only — REGISTER, in/out INVITE, re-INVITE (hold/resume + session-timer refresh), BYE/CANCEL/INFO/OPTIONS. Explicit non-goals: no proxy/SBC roles, no PRACK/SUBSCRIBE initially.
  • Phased, bridge-backed migration. A patched-fork [patch.crates-io] keeps calls working until each flow reaches parity — nothing big-bang.

Why

  • We don't control our own bug-fix loop today (e.g. the in-dialog re-INVITE 2xx ACK route-set bug that breaks hold/resume through a proxy).
  • The external stack leaks through our public API (ClientInviteDialog etc.), so even a version bump is a breaking change for consumers — and its current major line is a hard fork of its own message layer that still ships the bug.

Scope of this PR

Documentation only — no code. Implementation starts at Phase 1 after sign-off on the plan.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BBYdYGwVkEUhUfeAAUoA3p

Add plan doc 08 for a clean-room SIP transaction/dialog/transport engine
that replaces the external stack dependency. Kept as an internal
pub(crate) `stack` module inside the single `wavekat-sip` crate (no
second crate), keeping `rsip` for message types and migrating
flow-by-flow behind a patched-fork bridge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBYdYGwVkEUhUfeAAUoA3p
@wavekat-eason

Copy link
Copy Markdown
Contributor Author

Already included in #43 (the stack design notes docs/08docs/17 land with it). Closing in favor of the consolidated 0.1.0 PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant